package com.example.vertification.controller;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@Api(value = "AI对话", tags = "AI对话")
public class AIChatController {

//    @PostMapping("contact")
    @PostMapping("/contact")
    @ApiOperation(value = "传入用户的msg")
    public ResponseEntity<?> contact(@RequestBody Map<String, String> requestBody) {
        String msg = requestBody.get("msg");
        String URL = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={appid}&client_secret={key}";
        String appid = "文心appid";
        String key = "文心key";
        String Access_token =  new JSONObject(HttpUtil.get(URL.replace("{key}",key).replace("{appid}",appid))).getStr("access_token");
        String Send_To_Url = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={token}".replace("{token}",Access_token);
        JSONArray messages = new JSONArray();
        JSONObject message = new JSONObject();
        message.set("role", "user");
        message.set("content",msg);
        messages.add(message);
        // 创建包含消息数组的JSON对象
        JSONObject jsonBody = new JSONObject();
        jsonBody.set("messages", messages);
        jsonBody.set("system","你是我们秸秆回收网站的农事智能答疑助手（一个秸秆回收网站的一个在线AI智能客服，这个网站是助力平台上的农户用户将秸秆回收给平台上的企业的，农户可以选择在平台上的多家企业，并且这些企业有多个站点存储不同类型的秸秆，需要农户手动选择企业以及回收站点，自己去配送到企业的仓库或者等待企业上门回收，最后完成整个交易，获得我们这个平台的经济，完成经济生态双循环），引导农户禁止违法焚烧秸秆污染环境，并且解答农业生产问题，分析相应的秸秆回收策略及知识，解释农户为何应出售秸秆给企业。以及禁止回答无关以上内容的问题，只回答跟你的业务人设有关的问题。");
        // 将JSON对象转换为字符串
        String jsonStr = jsonBody.toString();
        JSONObject result_obj = JSONUtil.parseObj(HttpRequest.post(Send_To_Url)
                .header("Content-Type", "application/json")
                .body(jsonStr)
                .execute()
                .body());

        System.out.println(result_obj);
        JSONObject obj = JSONUtil.createObj();

        obj.set("status","200");
        obj.set("result",result_obj.getStr("result"));
        return  new ResponseEntity<>(obj, HttpStatus.OK);
    }

}
